package day20170414.homework.dao.impl;

import day20170414.homework.entity.StudentEntity;

public class StudentDaoImpl extends StudentDaoBasicImpl{
	
	/**
	 * 学生增加
	 * @param oldArrays	老的学生对象数组
	 * @param stuObject	学生对象
	 */
	@Override
	public void createStudent(StudentEntity[] oldArrays,StudentEntity stuObject) {
		//成功直接加到数组的最后一个位置
		oldArrays[oldArrays.length-1] = stuObject;
		System.out.println("增加成功...");
	}
	
	/**
	 * 学生删除
	 * @param oldArrays	老的学生对象数组
	 */
	@Override
	public StudentEntity[] deleteStudent(StudentEntity[] oldArrays,String...args) {
		//校验是否有相同的
		boolean result = false;
		//长度
		int count = 0;
		for(int out=0; out<oldArrays.length; out++){
			StudentEntity stu = oldArrays[out];
			if(stu != null){
				String stuName = stu.getName();
				//每次进来初始化
				result = false;
				for(int index=0; index<args.length; index++){
					if(stuName.equals(args[index])){
						result = true;
						break;
					}
				}
				if(!result){
					count++;
				}
			}
		}
		
		//新数组赋值的下标
		StudentEntity[] newArrays = new StudentEntity[count];
		for(int out=0; out<oldArrays.length; out++){
			StudentEntity stu = oldArrays[out];
			if(stu != null){
				String stuName = stu.getName();
				//每次进来初始化
				result = false;
				for(int index=0; index<args.length; index++){
					if(stuName.equals(args[index])){
						result = true;
						break;
					}
				}
				if(!result){
					newArrays[count-1] = stu;
					count--;
				}
			}
		}
		return newArrays;
	}
	
	/**
	 * 学生修改
	 * @param oldArrays	老的学生对象数组
	 * @param stuName	需要修改的学生名字
	 * @param scanner	扫描仪
	 */
	@Override
	public void updateStudent(StudentEntity[] oldArrays,StudentEntity stuObject) {
		//找到学生，拿到对应的下标
		int xb = super.studentGudge(oldArrays, stuObject.getName());
		//进行修改
		oldArrays[xb].setAge(stuObject.getAge());
		oldArrays[xb].setScore(stuObject.getScore());
		System.out.println("修改成功...");
		System.out.println("名字：" + oldArrays[xb].getName());
		System.out.println("年龄：" + oldArrays[xb].getAge());
		System.out.println("成绩：" + oldArrays[xb].getScore());
	}
	
	/**
	 * 学生查询
	 * @param oldArrays	老的学生对象数组
	 */
	@Override
	public void retrieveStudent(StudentEntity[] oldArrays) {
		for(int index=0; index<oldArrays.length; index++){
			System.out.println(oldArrays[index]);
		}
	}
	
	/**
	 * 学生名字查询
	 * @param oldArrays	老的学生对象数组
	 * @param name		查询的学生名字
	 */
	@Override
	public void retrieveStudent(StudentEntity[] oldArrays,String name){
		for(int index=0; index<oldArrays.length; index++){
			//拿到学生的对象
			StudentEntity studentEntity = oldArrays[index];
			//防止空指针
			if(studentEntity != null){
				//拿到学生的名字
				String stuName = studentEntity.getName();
				//判断对象数组的名字是否和传进来的名字是否相同
				if(name.equals(stuName)){
					//如果相同就打印
					System.out.println(oldArrays[index]);
				}
			}
		}
	}
	
	/**
	 * 学生名字查询
	 * @param oldArrays	老的学生对象数组
	 * @param age		查询的学生年龄
	 */
	public void retrieveStudent(StudentEntity[] oldArrays,int age){
		for(int index=0; index<oldArrays.length; index++){
			//拿到学生的对象
			StudentEntity studentEntity = oldArrays[index];
			//防止空指针
			if(studentEntity != null){
				//拿到学生的年龄
				int stuAge = studentEntity.getAge();
				//传进来的年龄大于对象数组的年龄
				if(stuAge >= age){
					//如果大于就打印
					System.out.println(oldArrays[index]);
				}
			}
		}
	}
}
